package com.quick.api.dblog;


import com.quick.api.config.DataSourceConstant;
import com.quick.api.config.DynamicDataSourceContextHolder;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

import java.util.logging.Logger;

/**
 * @author ：chicunxiang
 * @date ：Created in 2021/3/25 13:53
 * @description：
 * @version: 1.0
 */
public class DynamicDataSource extends AbstractRoutingDataSource {

    private final Logger logger = Logger.getLogger(DynamicDataSource.class.getName());

    @Override
    protected Object determineCurrentLookupKey() {
        String dataSource = DynamicDataSourceContextHolder.getDataSource();
        if (!DataSourceConstant.ENABLE_LOGGER) {
            return dataSource;
        }
        if (dataSource == null) {
            logger.info("当前使用数据源为空, 使用默认数据源:" + DynamicDataSourceContextHolder.DEFAULT_DATA_SOURCE);
        } else if (DynamicDataSourceContextHolder.DATA_SOURCE_IS_ONE) {
            logger.info("当前使用数据源只有一个, 使用默认数据源:" + DynamicDataSourceContextHolder.DEFAULT_DATA_SOURCE);
        } else if (DynamicDataSourceContextHolder.DATA_SOURCE_KEYS != null && !DynamicDataSourceContextHolder.DATA_SOURCE_KEYS.contains(dataSource)) {
            logger.info("没有找到指定数据源, 使用默认数据源:" + DynamicDataSourceContextHolder.DEFAULT_DATA_SOURCE);
        } else {
            logger.info("当前使用数据源为：" + dataSource);
        }
        return dataSource;
    }
}